package com.yonyougov.devops.cruxcisupport.user;

import com.yonyougov.devops.cruxcisupport.util.CruxDevOpsIdGenerator;
import com.yonyougov.devops.fwc.core.entity.BasicEntity;
import com.yonyougov.devops.fwc.core.id.IdGenerator;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;

/***
 * t_user
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserEntity extends BasicEntity implements Serializable {

    /***
     * 主键
     */
    private BigInteger id;

    /***
     * 用户名称
     */
    private String userName;

    /***
     * 用户密码
     */
    private String password;

    /***
     * 用户创建时间
     */
    private Date createTime;

    /***
     * 用户注销时间
     */
    private Date deleteTime;

    /***
     * 用户邮箱
     */
    private String email;

    /***
     * 是否锁定
     */
    private Boolean locked;


    /**
     * 用户公钥
     */
    private String publicKey;

    /**
     * 用户备注描述
     */
    private String remark;

    /**
     * 用户昵称
     */
    private String nickName;

    /**
     * 用户类型：1 开发 2 测试 3 管理
     */
    private Integer officeType;

    /**
     * 用户状态 空或0为启用  1为停用
     * */
    private Integer status;

    /***
     * 获取主键
     *
     * @return 获取主键
     */
    public BigInteger getId() {
        return id;
    }

    /***
     * 设置主键
     *
     * @param id 主键
     */
    public void setId(BigInteger id) {
        this.id = id;
    }

    /***
     * 获取用户名称
     *
     * @return 获取用户名称
     */
    public String getUserName() {
        return userName;
    }

    /***
     * 设置用户名称
     *
     * @param userName 用户名称
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /***
     * 获取用户密码
     *
     * @return 获取用户密码
     */
    public String getPassword() {
        return password;
    }

    /***
     * 设置用户密码
     *
     * @param password 用户密码
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /***
     * 获取用户创建时间
     *
     * @return 获取用户创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /***
     * 设置用户创建时间
     *
     * @param createTime 用户创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /***
     * 获取用户注销时间
     *
     * @return 获取用户注销时间
     */
    public Date getDeleteTime() {
        return deleteTime;
    }

    /***
     * 设置用户注销时间
     *
     * @param deleteTime 用户注销时间
     */
    public void setDeleteTime(Date deleteTime) {
        this.deleteTime = deleteTime;
    }

    /***
     * 获取用户邮箱
     *
     * @return 获取用户邮箱
     */
    public String getEmail() {
        return email;
    }

    /***
     * 设置用户邮箱
     *
     * @param email 用户邮箱
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /***
     * 获取是否锁定
     *
     * @return 获取是否锁定
     */
    public Boolean getLocked() {
        return locked;
    }

    /***
     * 设置是否锁定
     *
     * @param locked 是否锁定
     */
    public void setLocked(Boolean locked) {
        this.locked = locked;
    }


    public String getPublicKey() {
        return publicKey;
    }

    public void setPublicKey(String publicKey) {
        this.publicKey = publicKey;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public Integer getOfficeType() {
        return officeType;
    }

    public void setOfficeType(Integer officeType) {
        this.officeType = officeType;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }
    @Override
    public String toString() {
        return "UserEntity{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", password='" + password + '\'' +
                ", createTime=" + createTime +
                ", deleteTime=" + deleteTime +
                ", email='" + email + '\'' +
                ", locked=" + locked +
                ", publicKey='" + publicKey + '\'' +
                ", remark='" + remark + '\'' +
                ", nickName='" + nickName + '\'' +

                '}';
    }

    //<!--用户自定义代码开始-->
    public IdGenerator idGenerator() {
        return new CruxDevOpsIdGenerator();
    }
    //<!--用户自定义代码结束-->
}
